// 页面中的变化都是用数据来驱动的
Page({
  data: {
    todoText: '', // 新待办事项的文本
    todos: [],       // 待办事项列表，每个项包含 id, text, completed
    nextTodoId: 0    // 用于生成唯一ID
  },
  inputChange(e){
    // 事件对象
    this.setData({
      todoText: e.detail.value
    })
  },
  onLoad: function() {
    const todos = wx.getStorageSync('todos')
    if (todos && Array.isArray(todos)) {
      this.setData({
        todos: todos
      });
    } 
    // 设置数据结构{text: 'ddd', completed: false, id: 1}
    // 异常处理
    // this.loadTodos(); // 页面加载时从本地存储加载待办事项
  },

  // 处理输入框内容变化
  handleInputChange: function(e) {
    console.log(e)
    this.setData({
      newTodoText: e.detail.value
    });
  },

  // 添加待办事项
  addTodo: function(e) {
    console.log(e)
    const { todoText, todos, nextTodoId } = this.data;
    if (todoText.trim() === '') {
      wx.showToast({
        title: '请输入待办事项',
        icon: 'none'
      });
      return;
    }

    const newTodo = {
      id: nextTodoId,
      text: todoText.trim(),
      completed: false
    };
    this.setData({
      todos: [...todos, newTodo],
      todoText: '', 
      nextTodoId: nextTodoId + 1
    }, () => {
      this.saveTodos();
    });
    // 或者用下面的形式
    // const newList = [...todos, newTodo]
    // this.setData({
    //   todos: newList,
    //   todoText: '', // 清空输入框
    //   nextTodoId: nextTodoId + 1
    // });
    // wx.setStorageSync('todos', newList)
  },

  // 切换待办事项完成状态
  toggleTodoCompleted: function(e) {
    const id = e.currentTarget.dataset.id;
    const { todos } = this.data;
    const updatedTodos = todos.map(todo =>
      todo.id === id ? { ...todo, completed: !todo.completed } : todo
    );

    this.setData({
      todos: updatedTodos
    }, () => {
      this.saveTodos();
    });
  },

  // 删除待办事项
  // 事件传参：通过dataset属性来传递，dataset属性是一个对象，包含了所有data-开头的自定义属性
  // currentTarget: 当前绑定事件的元素，target: 触发事件的元素
  deleteTodo: function(e) {
    const id = e.currentTarget.dataset.id;
    const that = this;
    const newList = this.data.todos.filter(function(item){
      return item.id !== id;
      // if(item.id === id){return false;}
      // return true
    })
    this.setData({
      todos: newList
    }, () => {
      this.saveTodos();
    });
    // 数据驱动
    // wx.showModal({
    //   title: '提示',
    //   content: '确定要删除该待办事项吗？',
    //   confirmText: '删除',
    //   cancelText: '取消',
    //   success(res) {
    //     if (res.confirm) {
    //       const { todos } = that.data;
    //       const remaining = todos.filter(item => item.id !== id);
    //       that.setData({ todos: remaining }, () => {
    //         that.saveTodos();
    //       });
    //     }
    //   }
    // });
  },

  // 从本地存储加载待办事项
  loadTodos: function() {
    try {
      const stored = wx.getStorageSync('todos');
      if (stored && Array.isArray(stored)) {
        const maxId = stored.reduce((max, item) => Math.max(max, Number(item.id) || 0), -1);
        this.setData({
          todos: stored,
          nextTodoId: maxId + 1
        });
      }
    } catch (e) {
      console.error('加载待办失败', e);
    }
  },

  // 保存待办事项到本地存储
  saveTodos: function() {
    try {
      wx.setStorageSync('todos', this.data.todos);
    } catch (e) {
      console.error('保存待办失败', e);
    }
  }
})